Communication networks are used to transfer information, such as data, voice, text or video information, among communication devices, such as packet telephones, computer terminals, multimedia workstations, and videophones, connected to the networks. A network typically comprises nodes connected to each other, and to communication devices, by various links. Each link is characterized by a bandwidth or link capacity. Information input from the communication devices to the network may be of any form but is often formatted into fixed-length packets or cells.
Packet-switching network architectures are widely used, for example, in popular local-area network (LAN) protocols, such as Ethernet and asynchronous transfer mode (ATM) protocols. In a packet-switched network, data transmissions are typically divided into blocks of data, called packets, for transmission through the network. For a packet to get to its proper destination, the packet must traverse through one or more network switches or intermediate systems. Typically, a packet includes a header, containing source and destination address information, as well as a payload (the actual application data).
FIG. 1 illustrates a conventional multimedia packet telephony system 100. The packet telephony system 100 shown in FIG. 1 includes a packet network 105 that connects a number of devices, such as a private branch exchange (PBX) switch 110, workstation 120, packet telephone adapter 125 and a facsimile machine 130. The network environment 105, the private branch exchange (PBX) switch 110 or the devices themselves include a mechanism for converting voice information to a form suitable for packet transmission.
Voice, video, and other important media types are fundamentally analog. In order to pass analog information over a digital network, it is necessary to encode the analog information into digital data on the transmit side, and decode the digital information back to analog information on the receive side. An encoder, decoder pair is referred to as a “codec.” The fundamental variables associated with the encoding scheme are: (1) precision and frequency of analog-to-digital sampling (typically 8-bit samples 8,000 times per second for voice); (2) packetization, meaning how many data packets are sent per second (typically 20, 30 or 40 milliseconds); (3) coding algorithm, such as waveform coding, hybrid coding or voice coding. These fundamental variables determine the processing requirements necessary to implement the encoder and decoder, the bandwidth requirement, and drive the end-to-end media latency. At the source node, the codec uses a coding process to encode the data and transform the data signal into packets. At the receiver, the codec decodes the received packets and recreates the original transmitted information. Currently, an appropriate codec is selected as part of the call setup process and the selected codec is thereafter used for both (unidirectional) half-circuits for the entire connection.
The International Telephony Union (ITU) has defined a number of standards for coding voice and other information. The G.711 standard, for example, encodes Pulse Code Modulation (PCM) voice samples and produces digital audio at 64 kilo-bits-per-second. For each voice sample, the codec stores the corresponding amplitude of the voice signal. The samples can be used by the codec at the destination node to reconstruct the original analog voice information. Other coding standards, such as the G.726, G.728 and G.729 standards, describe various encoding techniques that produce packets of data at various bit-rates. A particular coding standard is selected for a given connection by balancing the desired degree of compression, encoding/decoding complexity and latency with the desired quality of service, in an attempt to maximize overall network utilization while maintaining sufficient quality. The G.711 standard, for example, provides a low degree of compression with an essentially lossless reproduction of the original information, while the G.729A standard requires more procesing resources, however yields a much higher degree of compression with a lossy reproduction of the original information.
While conventional packet telephony systems effectively select an appropriate codec for a given media type to produce satisfactory compression, conventional packet telephony systems do not dynamically adjust the codec selection for a given connection based on network conditions. As apparent from the above-described deficiencies with conventional packet telephony systems, a need exists for a packet telephony system that permits the compression scheme to be dynamically adjusted in response to real-time network conditions. Yet another need exists for a method and apparatus that actively manages the bandwidth of a packet telephony system.